# Unziper used by pyMenu since python 2.5 does not have zipfile.ExtractAll() # I can't remember the author, I only did a small mod to rename eboot.pbp into wmenu.bin from define import * import zipfile, os class unzip: # Used by save_convert() def __init__(self, verbose = False, percent = 10): self.verbose = verbose self.percent = percent def extract(self, file, dir): #if not dir.endswith(':') and not os.path.exists(dir): # os.mkdir(dir) zf = zipfile.ZipFile(file) self._createstructure(file, dir) num_files = len(zf.namelist()) percent = self.percent divisions = 100 / percent perc = int(num_files / divisions) for i, name in enumerate(zf.namelist()): if os.path.basename(name) == "EBOOT.PBP" or os.path.basename(name) == "eboot.pbp": outfile = open(os.path.join(dir, os.path.dirname(name)+"/"+"wmenu.bin"), 'wb') outfile.write(zf.read(name)) outfile.flush() outfile.close() elif not name.endswith('/'): outfile = open(os.path.join(dir, name), 'wb') outfile.write(zf.read(name)) outfile.flush() outfile.close() def _createstructure(self, file, dir): self._makedirs(self._listdirs(file), dir) def _makedirs(self, directories, basedir): for dir in directories: curdir = os.path.join(basedir, dir) if not os.path.exists(curdir): os.mkdir(curdir) def _listdirs(self, file): zf = zipfile.ZipFile(file) dirs = [] for name in zf.namelist(): if name.endswith('/'): dirs.append(name) dirs.sort() return dirs